{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# First 2000-volume sample of fiction\n",
    "\n",
    "This is straightforward, but I'm going to walk through it slowly to demonstrate different approaches one can use in basic Python and in Pandas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# first, we \"import\" some modules we'll be using\n",
    "\n",
    "import pandas as pd\n",
    "import random"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now actually read in the metadata."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>docid</th>\n",
       "      <th>oldauthor</th>\n",
       "      <th>author</th>\n",
       "      <th>authordate</th>\n",
       "      <th>inferreddate</th>\n",
       "      <th>latestcomp</th>\n",
       "      <th>datetype</th>\n",
       "      <th>startdate</th>\n",
       "      <th>enddate</th>\n",
       "      <th>imprint</th>\n",
       "      <th>...</th>\n",
       "      <th>recordid</th>\n",
       "      <th>instances</th>\n",
       "      <th>allcopiesofwork</th>\n",
       "      <th>copiesin25yrs</th>\n",
       "      <th>enumcron</th>\n",
       "      <th>volnum</th>\n",
       "      <th>title</th>\n",
       "      <th>parttitle</th>\n",
       "      <th>earlyedition</th>\n",
       "      <th>shorttitle</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>mdp.39015031913893</td>\n",
       "      <td>Spencer, Louise Reid</td>\n",
       "      <td>Spencer, Louise Reid</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>2100</td>\n",
       "      <td>|</td>\n",
       "      <td>||||</td>\n",
       "      <td>||||</td>\n",
       "      <td>Thomas Y. Crowell company|1945</td>\n",
       "      <td>...</td>\n",
       "      <td>8744</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Guerrilla wife | $c: [by] Louise Reid Spencer.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>Guerrilla wife</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>mdp.39015003936864</td>\n",
       "      <td>Baker, Robert H</td>\n",
       "      <td>Baker, Robert H</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>2100</td>\n",
       "      <td>n</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>Port Washington, N.Y.|Ashley Books|197-?].</td>\n",
       "      <td>...</td>\n",
       "      <td>39757</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>The suburbs : | a novel / | $c: by Robert H. B...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>The suburbs : a novel</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>mdp.39015068342305</td>\n",
       "      <td>Dickens, Charles</td>\n",
       "      <td>Dickens, Charles</td>\n",
       "      <td>1812-1870.</td>\n",
       "      <td>0</td>\n",
       "      <td>1870</td>\n",
       "      <td>n</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>New York|The American news company|n.d.</td>\n",
       "      <td>...</td>\n",
       "      <td>119996</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Edwin Drood. | $c: By Charles Dickens. With il...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>Edwin Drood</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>mdp.39015055066586</td>\n",
       "      <td>Stretton, Hesba</td>\n",
       "      <td>Stretton, Hesba</td>\n",
       "      <td>1832-1911.</td>\n",
       "      <td>0</td>\n",
       "      <td>1911</td>\n",
       "      <td>n</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>New York|Dodd, Mead &amp; co.|n.d.</td>\n",
       "      <td>...</td>\n",
       "      <td>122460</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Carola, | $c: by Hesba Stretton.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>Carola</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>mdp.39015055066594</td>\n",
       "      <td>Stretton,Hesba</td>\n",
       "      <td>Stretton, Hesba</td>\n",
       "      <td>1832-1911.</td>\n",
       "      <td>0</td>\n",
       "      <td>1911</td>\n",
       "      <td>n</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>New York|Dodd, Mead &amp; co.|n.d.</td>\n",
       "      <td>...</td>\n",
       "      <td>122464</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>In prison &amp; out. | $c: By Hesba Stretton.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>In prison &amp; out</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                docid             oldauthor                author  authordate  \\\n",
       "0  mdp.39015031913893  Spencer, Louise Reid  Spencer, Louise Reid         NaN   \n",
       "1  mdp.39015003936864       Baker, Robert H       Baker, Robert H         NaN   \n",
       "2  mdp.39015068342305      Dickens, Charles      Dickens, Charles  1812-1870.   \n",
       "3  mdp.39015055066586       Stretton, Hesba       Stretton, Hesba  1832-1911.   \n",
       "4  mdp.39015055066594        Stretton,Hesba       Stretton, Hesba  1832-1911.   \n",
       "\n",
       "   inferreddate  latestcomp datetype startdate enddate  \\\n",
       "0             0        2100        |      ||||    ||||   \n",
       "1             0        2100        n                     \n",
       "2             0        1870        n                     \n",
       "3             0        1911        n                     \n",
       "4             0        1911        n                     \n",
       "\n",
       "                                      imprint          ...           recordid  \\\n",
       "0              Thomas Y. Crowell company|1945          ...               8744   \n",
       "1  Port Washington, N.Y.|Ashley Books|197-?].          ...              39757   \n",
       "2     New York|The American news company|n.d.          ...             119996   \n",
       "3              New York|Dodd, Mead & co.|n.d.          ...             122460   \n",
       "4              New York|Dodd, Mead & co.|n.d.          ...             122464   \n",
       "\n",
       "  instances allcopiesofwork copiesin25yrs enumcron volnum  \\\n",
       "0         1               1             1      NaN    NaN   \n",
       "1         1               1             1      NaN    NaN   \n",
       "2         1               1             1      NaN    NaN   \n",
       "3         1               1             1      NaN    NaN   \n",
       "4         1               1             1      NaN    NaN   \n",
       "\n",
       "                                               title parttitle  earlyedition  \\\n",
       "0     Guerrilla wife | $c: [by] Louise Reid Spencer.       NaN          True   \n",
       "1  The suburbs : | a novel / | $c: by Robert H. B...       NaN          True   \n",
       "2  Edwin Drood. | $c: By Charles Dickens. With il...       NaN          True   \n",
       "3                   Carola, | $c: by Hesba Stretton.       NaN          True   \n",
       "4          In prison & out. | $c: By Hesba Stretton.       NaN          True   \n",
       "\n",
       "              shorttitle  \n",
       "0         Guerrilla wife  \n",
       "1  The suburbs : a novel  \n",
       "2            Edwin Drood  \n",
       "3                 Carola  \n",
       "4        In prison & out  \n",
       "\n",
       "[5 rows x 28 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta = pd.read_csv('../workmeta.tsv', sep = '\\t', low_memory = False)\n",
    "meta.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(138137, 28)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta.shape\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That tells us we have 138,137 rows and 28 columns in the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['docid', 'oldauthor', 'author', 'authordate', 'inferreddate',\n",
       "       'latestcomp', 'datetype', 'startdate', 'enddate', 'imprint',\n",
       "       'imprintdate', 'contents', 'genres', 'subjects', 'geographics',\n",
       "       'locnum', 'oclc', 'place', 'recordid', 'instances', 'allcopiesofwork',\n",
       "       'copiesin25yrs', 'enumcron', 'volnum', 'title', 'parttitle',\n",
       "       'earlyedition', 'shorttitle'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Let's count the number of volumes that have \"earlyedition\" flagged.\n",
    "\n",
    "To start with, I'll do it in the ordinary Python way we practiced earlier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "129023\n"
     ]
    }
   ],
   "source": [
    "ctr = 0\n",
    "for value in meta.earlyedition:\n",
    "    if value == True:\n",
    "        ctr += 1\n",
    "print(ctr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But there's a simpler way to do that. If you sum a list of Boolean (True/False) values, you get a count of the number of Trues. So, just:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "129023\n"
     ]
    }
   ],
   "source": [
    "print(sum(meta.earlyedition))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In any case, this tells us that only about 129,000 of our 138,000 volumes were printed within 25 years of their author's death. I'm going to sample randomly from that group. In fact, if it were possible, I'd restrict even further to books printed within 25 years of the first publication *of that title.* But we don't always directly know a first publication date.\n",
    "\n",
    "### Actually sampling\n",
    "\n",
    "I want to get 100 novels for each decade between 1800-09 and 2000-09. So, let's say 10 volumes a year. But I'm also conscious that we'll be rejecting a lot of books. So I'm going to initially sample 13 volumes a year, with the expectation that almost a third will be rejected.\n",
    "\n",
    "There are easy pandas-specific ways to do this. But I want to demonstrate Python logic, so I'm going to avoid easy things that look like magic tricks and do this a more laborious way.\n",
    "\n",
    "Let's just go through the whole dataset row by row and check the **document ID** and **date of publication.** If the date is between 1800 and 2010, we'll save the document ID and file it in a dictionary (set of file drawers) where the key for each drawer is a particular year, and the contents of each drawer are a list of doc IDs.\n",
    "\n",
    "Then, once we've got the volumes sorted in this manner by date, we can randomly sample 13 volumes from each drawer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# To go through a pandas dataframe row by row, you can use the .iterrows() method.\n",
    "\n",
    "bydate = dict()\n",
    "# create the dictionary\n",
    "\n",
    "for idx, row in meta.iterrows():\n",
    "    date = row.inferreddate\n",
    "    docid = row.docid\n",
    "    early = row.earlyedition\n",
    "    \n",
    "    if early == False:\n",
    "        continue\n",
    "        # we're not going to use rows that aren't marked earlyedition\n",
    "        # so we \"continue\" to the next iteration of the loop, and don't\n",
    "        # do anything below\n",
    "    \n",
    "    else:\n",
    "        if date < 1800 or date > 2009:\n",
    "            continue\n",
    "        else:\n",
    "            \n",
    "            if date not in bydate:\n",
    "                # if we haven't encountered any volumes with this date yet,\n",
    "                # create a list with one member\n",
    "                bydate[date] = [docid]\n",
    "            else:\n",
    "                # otherwise, add this docid to the existing list\n",
    "                bydate[date].append(docid)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### A little visualization\n",
    "\n",
    "What's the date distribution of these volumes, by the way?\n",
    "\n",
    "We can find out by counting the number of volumes in each \"file drawer.\"\n",
    "\n",
    "First we'll import a modules that's useful for plotting graphs. Then we'll go year by year from 1800 to 2009. We'll create a list of x coordinates that is simply the list of years, and a list of y coordinates that is the number of volumes in that year. The we just scatter plot (x, y)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106fba2e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = []\n",
    "y = []\n",
    "for year in range(1800, 2010):\n",
    "    x.append(year)\n",
    "    y.append(len(bydate[year]))\n",
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can see that the advent of copyright at 1923 makes a big difference in the size of the collection. I'm not exactly sure why; our collection is not limited to public-domain works. But possibly libraries have been less enthusiastic about digitizing fiction when it can't be made publicly available.\n",
    "\n",
    "We're going to flatten that out and select an evenly-distributed sample."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### okay, let's finally select volumes\n",
    "\n",
    "I'm going to go year by year. From the file drawer for each year (```bydate[year]```) I'm going to draw thirteen books.\n",
    "\n",
    "Then I'll add them to a constantly-growing list called ```selected.```\n",
    "\n",
    "Notice how this echoes the counting strategy. Create a counter outside the loop; set it to zero; then loop through a sequence and add one to the counter ... Here we're extending a list instead of adding to a counter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2730\n"
     ]
    }
   ],
   "source": [
    "selected = list()\n",
    "\n",
    "for yr in range(1800, 2010):\n",
    "    selected.extend(random.sample(bydate[yr], 13))\n",
    "\n",
    "print(len(selected))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once we have a list of document ids we want to select, we can use them to extract the relevant rows from the table ```meta.```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2730, 27)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# To create a table limited to those document ids, we can just use the \"docid\"\n",
    "# column to *index* meta\n",
    "\n",
    "meta.set_index('docid', inplace = True)\n",
    "\n",
    "# and then select those rows\n",
    "\n",
    "our_meta = meta.loc[selected, : ]\n",
    "our_meta.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now actually write that to disk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "our_meta.to_csv('firstsample.tsv', sep = '\\t')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But in exploring this data with you, I quickly found that 28 full-width columns are overwhelming. So let's select a smaller set of twelve columns, and truncate some of them at 25 or 50 characters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2730, 18)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>docid</th>\n",
       "      <th>author</th>\n",
       "      <th>realname</th>\n",
       "      <th>pseudonym</th>\n",
       "      <th>gender</th>\n",
       "      <th>nationality</th>\n",
       "      <th>authordate</th>\n",
       "      <th>inferreddate</th>\n",
       "      <th>firstpub</th>\n",
       "      <th>latestcomp</th>\n",
       "      <th>allcopiesofwork</th>\n",
       "      <th>copiesin25yrs</th>\n",
       "      <th>enumcron</th>\n",
       "      <th>imprint</th>\n",
       "      <th>genres</th>\n",
       "      <th>subjects</th>\n",
       "      <th>category</th>\n",
       "      <th>shorttitle</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>nyp.33433074911573</td>\n",
       "      <td>Smith, Charlotte Turner</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>1749-1806.</td>\n",
       "      <td>1800</td>\n",
       "      <td></td>\n",
       "      <td>1800</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>v. 4</td>\n",
       "      <td>London;Printed by and for</td>\n",
       "      <td>Fiction</td>\n",
       "      <td>English fiction</td>\n",
       "      <td></td>\n",
       "      <td>The Hungarian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>nyp.33433074911581</td>\n",
       "      <td>Smith, Charlotte Turner</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>1749-1806.</td>\n",
       "      <td>1800</td>\n",
       "      <td></td>\n",
       "      <td>1800</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>v. 5</td>\n",
       "      <td>London;Printed by and for</td>\n",
       "      <td>Fiction</td>\n",
       "      <td>English fiction</td>\n",
       "      <td></td>\n",
       "      <td>The Hungarian (con't.) Leonora.  Guilelmine de...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>njp.32101037604772</td>\n",
       "      <td>Du Bois, Edward</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>1774-1850.</td>\n",
       "      <td>1800</td>\n",
       "      <td></td>\n",
       "      <td>1800</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>London;Printed for J. Wri</td>\n",
       "      <td>Fiction</td>\n",
       "      <td>Godwin, William|1756-1836</td>\n",
       "      <td></td>\n",
       "      <td>St. Godwin: a tale of the sixteenth, seventeen...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>hvd.hn2he3</td>\n",
       "      <td>Kendall, Edward Augustus</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>1776?-1842.</td>\n",
       "      <td>1800</td>\n",
       "      <td></td>\n",
       "      <td>1800</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>London;Printed for E. New</td>\n",
       "      <td>Juvenile audience|Fiction</td>\n",
       "      <td>Conduct of life|Children'</td>\n",
       "      <td></td>\n",
       "      <td>The stories of Senex, or, Little histories of ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>hvd.hn2he5</td>\n",
       "      <td>NaN</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>NaN</td>\n",
       "      <td>1800</td>\n",
       "      <td></td>\n",
       "      <td>1800</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>London;Printed for Vernor</td>\n",
       "      <td>Fiction</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>The Governess, or, Evening amusements at a boa...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                docid                    author realname pseudonym gender  \\\n",
       "0  nyp.33433074911573   Smith, Charlotte Turner                             \n",
       "1  nyp.33433074911581   Smith, Charlotte Turner                             \n",
       "2  njp.32101037604772           Du Bois, Edward                             \n",
       "3          hvd.hn2he3  Kendall, Edward Augustus                             \n",
       "4          hvd.hn2he5                       NaN                             \n",
       "\n",
       "  nationality   authordate  inferreddate firstpub  latestcomp  \\\n",
       "0               1749-1806.          1800                 1800   \n",
       "1               1749-1806.          1800                 1800   \n",
       "2               1774-1850.          1800                 1800   \n",
       "3              1776?-1842.          1800                 1800   \n",
       "4                      NaN          1800                 1800   \n",
       "\n",
       "   allcopiesofwork  copiesin25yrs enumcron                    imprint  \\\n",
       "0                1              1     v. 4  London;Printed by and for   \n",
       "1                1              1     v. 5  London;Printed by and for   \n",
       "2                1              1      NaN  London;Printed for J. Wri   \n",
       "3                1              1      NaN  London;Printed for E. New   \n",
       "4                1              1      NaN  London;Printed for Vernor   \n",
       "\n",
       "                      genres                   subjects category  \\\n",
       "0                    Fiction            English fiction            \n",
       "1                    Fiction            English fiction            \n",
       "2                    Fiction  Godwin, William|1756-1836            \n",
       "3  Juvenile audience|Fiction  Conduct of life|Children'            \n",
       "4                    Fiction                                       \n",
       "\n",
       "                                          shorttitle  \n",
       "0                                      The Hungarian  \n",
       "1  The Hungarian (con't.) Leonora.  Guilelmine de...  \n",
       "2  St. Godwin: a tale of the sixteenth, seventeen...  \n",
       "3  The stories of Senex, or, Little histories of ...  \n",
       "4  The Governess, or, Evening amusements at a boa...  "
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def truncate25(afield):\n",
    "    if pd.isnull(afield):\n",
    "        return ''\n",
    "    elif len(afield) <= 25:\n",
    "        return afield\n",
    "    else:\n",
    "        return afield[0:25]\n",
    "\n",
    "def shrinkframe(indf):\n",
    "    df = indf.copy()\n",
    "    df.reset_index(inplace = True)\n",
    "    newdf = df[['docid', 'author', 'authordate', 'inferreddate', 'latestcomp', 'allcopiesofwork', 'copiesin25yrs', 'enumcron']]\n",
    "    newdf = newdf.assign(imprint = df.imprint.map(truncate25))\n",
    "    newdf = newdf.assign(genres = df.genres.map(truncate25))\n",
    "    newdf = newdf.assign(subjects = df.subjects.map(truncate25))\n",
    "    newdf = newdf.assign(shorttitle = df.shorttitle)\n",
    "    newdf = newdf.assign(realname = '')\n",
    "    newdf = newdf.assign(pseudonym = '')\n",
    "    newdf = newdf.assign(category = '')\n",
    "    newdf = newdf.assign(firstpub = '')\n",
    "    newdf = newdf.assign(realname = '')\n",
    "    newdf = newdf.assign(gender = '')\n",
    "    newdf = newdf.assign(nationality = '')\n",
    "    newdf = newdf[['docid', 'author', 'realname', 'pseudonym', 'gender', 'nationality', 'authordate', \n",
    "                   'inferreddate', 'firstpub', 'latestcomp', 'allcopiesofwork', 'copiesin25yrs',\n",
    "                   'enumcron', 'imprint', 'genres', 'subjects', 'category', 'shorttitle']]\n",
    "    \n",
    "    return newdf\n",
    "\n",
    "shrunk = shrinkframe(our_meta)\n",
    "print(shrunk.shape)\n",
    "shrunk.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we need to divide this dataframe into three parts for the three of us. I'm giving 1200 rows to both of you, and taking 330 rows for myself as a sample, so I know what kind of problems you're encountering.\n",
    "\n",
    "#### divide in three parts\n",
    "\n",
    "We start by shuffling the index of our_meta, which is just a numeric index right now."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2230,\n",
       " 241,\n",
       " 61,\n",
       " 1823,\n",
       " 559,\n",
       " 1494,\n",
       " 344,\n",
       " 994,\n",
       " 72,\n",
       " 1604,\n",
       " 713,\n",
       " 29,\n",
       " 721,\n",
       " 2311,\n",
       " 2006,\n",
       " 1244,\n",
       " 506,\n",
       " 1890,\n",
       " 1412,\n",
       " 1582]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "indices = our_meta.index.tolist()\n",
    "random.shuffle(indices)\n",
    "indices[0:20]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then divide that random sequence into chunks like so:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "forjessica = indices[0: 1200]\n",
    "forpatrick = indices[1200: 2400]\n",
    "forted = indices[2400 : ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "teddf = shrinkframe(our_meta.loc[forted, ])\n",
    "teddf.to_csv('ted.tsv', sep = '\\t', index = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "jessdf = shrinkframe(our_meta.loc[forjessica, ])\n",
    "jessdf.to_csv('jessica.tsv', sep = '\\t', index = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "patdf = shrinkframe(our_meta.loc[forpatrick, ])\n",
    "patdf.to_csv('patrick.tsv', sep = '\\t', index = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sanity checks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nqDv2EYsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1315409e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(our_meta.inferreddate)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Good. even distribution across time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2009"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max(our_meta.inferreddate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1800"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "min(our_meta.inferreddate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
